package com.ruoyi.biz.service.impl;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

import com.ruoyi.biz.domain.BizTrainModel;
import com.ruoyi.biz.result.TrainIconInfoResult;
import com.ruoyi.biz.service.IBizTrainModelService;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.biz.mapper.BizTrainIconMapper;
import com.ruoyi.biz.domain.BizTrainIcon;
import com.ruoyi.biz.service.IBizTrainIconService;

/**
 * 火车图标Service业务层处理
 * 
 * @author cc
 * @date 2025-11-11
 */
@Service
public class BizTrainIconServiceImpl implements IBizTrainIconService 
{
    @Autowired
    private BizTrainIconMapper bizTrainIconMapper;
    @Autowired
    private IBizTrainModelService bizTrainModelService;

    /**
     * 查询火车图标
     * 
     * @param id 火车图标主键
     * @return 火车图标
     */
    @Override
    public BizTrainIcon selectBizTrainIconById(Long id)
    {
        return bizTrainIconMapper.selectBizTrainIconById(id);
    }

    /**
     * 查询火车图标列表
     * 
     * @param bizTrainIcon 火车图标
     * @return 火车图标
     */
    @Override
    public List<BizTrainIcon> selectBizTrainIconList(BizTrainIcon bizTrainIcon)
    {
        return bizTrainIconMapper.selectBizTrainIconList(bizTrainIcon);
    }

    /**
     * 新增火车图标
     * 
     * @param bizTrainIcon 火车图标
     * @return 结果
     */
    @Override
    public int insertBizTrainIcon(BizTrainIcon bizTrainIcon)
    {
        bizTrainIcon.setCreateTime(DateUtils.getNowDate());
        return bizTrainIconMapper.insertBizTrainIcon(bizTrainIcon);
    }

    /**
     * 修改火车图标
     * 
     * @param bizTrainIcon 火车图标
     * @return 结果
     */
    @Override
    public int updateBizTrainIcon(BizTrainIcon bizTrainIcon)
    {
        bizTrainIcon.setUpdateTime(DateUtils.getNowDate());
        return bizTrainIconMapper.updateBizTrainIcon(bizTrainIcon);
    }

    /**
     * 批量删除火车图标
     * 
     * @param ids 需要删除的火车图标主键
     * @return 结果
     */
    @Override
    public int deleteBizTrainIconByIds(Long[] ids)
    {
        return bizTrainIconMapper.deleteBizTrainIconByIds(ids);
    }

    /**
     * 删除火车图标信息
     * 
     * @param id 火车图标主键
     * @return 结果
     */
    @Override
    public int deleteBizTrainIconById(Long id)
    {
        return bizTrainIconMapper.deleteBizTrainIconById(id);
    }

    @Override
    public List<TrainIconInfoResult> getAllByUser(LoginUser loginUser) {
        List<TrainIconInfoResult> resultList = new ArrayList<>();
        BizTrainIcon queryIconParam = new BizTrainIcon();
        queryIconParam.setDeptId(loginUser.getDeptId());
        BizTrainModel queryModelParam = new BizTrainModel();
        queryIconParam.setDeptId(loginUser.getDeptId());
        List<BizTrainIcon> bizTrainIcons = this.selectBizTrainIconList(queryIconParam);
        List<BizTrainModel> bizTrainModels = bizTrainModelService.selectBizTrainModelList(queryModelParam);

        bizTrainModels.forEach(bizTrainModel -> {
            List<BizTrainIcon> icons = bizTrainIcons.stream().filter(item -> item.getTrainModelId().equals(bizTrainModel.getId())).collect(Collectors.toList());
            resultList.add(new TrainIconInfoResult(bizTrainModel,icons));
        });
        return resultList;
    }
}
